#include "Graph.h"
#include "GraphAlgorithms.h"
#include "TestGraphes.h"
#include "testTarjan.h"
#include "Test2SAT.h"
#include <vector>
#include <utility>
#include <iostream>
#include <Windows.h>
#include "DijkstraAlgorithms.h"
#include "TestDijkstra.h"

int main(){
	
	try{
		weighGraphesUnitAdjacentCheck();
		unitDistanceCheck();
		unitPathCheck();
		stressAdjacentWeighCheck();
		stressDistanceCheck();
		stressPathCheck();
		listGraphesUnitCheck();
		matrixGraphesUnitCheck();
		unitTestsAdjacent();
		unitTestsTopology();
		BFSUnitTests();
		DFSUnitTests();
		DFSInsideCheck();
		stressCondensationTest();
		stressRandomTarjanCheck();
		stressRandomShuffleTests();
		stressCheckSolvableSolution();
		stressCheckUnsolvableSolution();
		stress2SatGraph();
#ifndef _DEBUG
		timeCheckEmptyGraphs();
		timeCheckFullGraph();
		timeCheckFunctionalGraphs();
		timeCheckRandomGraph();
		timeAndTopologyCheckAcyclicGraph();
#else
		memoryLeaksListUnitTests();
		memoryLeaksMatrixUnitTests();
		memoryCheckAcyclicGraph();
		memoryCheckFullGraph();
		memoryCheckFunctionalGraphs();
		memoryCheckRandomGraph();
		memoryCheckEmptyGraph();
		graphChooseStressCheck(); 
#endif				
		unitDistanceCheck();
		unitPathCheck();
		stressDistanceCheck();
		stressPathCheck();
		system("PAUSE");
		return 0;
	}
	catch(const std::exception& ex){
		std::cerr << ex.what() << std::endl;
		system("PAUSE");
		return -1;
	}
	return 0;
}
